﻿using Abp.Application.Services.Dto;

namespace Basefr.App.Messages
{
    public interface IOutput
    {
    }


    public class QueryOutput<T, TPrimaryKey> : ListResultDto<T>, IOutput
        //where T : IEntityDto<TPrimaryKey>
        where TPrimaryKey : struct
    {

    }
    public class QueryOutput<T> : QueryOutput<T, int>
    //where T : IEntityDto
    {

    }

    public class QuerySingleOutput<T> : IOutput
    {
        public T Item { get; set; }
    }


    public class QueryPagedOutput<T, TPrimaryKey> : PagedResultDto<T>, IOutput
        //where T : IEntityDto<TPrimaryKey>
        where TPrimaryKey : struct
    {
        public bool IsOverPaged { get; set; }
    }
    public class QueryPagedOutput<T> : QueryPagedOutput<T, int>
    //where T : IEntityDto
    {

    }


    public class SaveOutput<T, TPrimaryKey> : IOutput
        where T : IEntityDto<TPrimaryKey>
    {
        public T Item { get; set; }
    }
    public class SaveOutput<T> : SaveOutput<T, int>
        where T : IEntityDto
    {

    }


    public class SaveListOutput<T, TPrimaryKey> : ListResultDto<T>, IOutput
        where T : IEntityDto<TPrimaryKey>
        where TPrimaryKey : struct
    {

    }
    public class SaveListOutput<T> : SaveListOutput<T, int>
        where T : IEntityDto
    {

    }


    public class DeleteOutput : IOutput
    {

    }

}
